from django.db.models import Q
from rest_framework.generics import ListAPIView
from rest_framework.permissions import IsAdminUser
from rest_framework.viewsets import ModelViewSet

from goods.models import SKUImage, SKU, GoodsCategory
from meiduo_admin.serializers.categories import CategorySimpleSerializer
from meiduo_admin.serializers.skus import SKUImageSerializer, SKUSimpleSerializer, SKUSerializer


# GET  /meiduo_admin/skus/images/?page=<页码>&page_size=<页容量>
# 获取图片表数据 图片管理(增删改查)
class SKUImageViewSet(ModelViewSet):
    permission_classes = [IsAdminUser]

    # 指定router动态生产路由时，提取参数的正则表达式
    lookup_value_regex = '\d+'
    # 指定视图所使用的查询集
    queryset = SKUImage.objects.all()
    # 指定视图所使用的序列化器类
    serializer_class = SKUImageSerializer


# GET /meiduo_admin/skus/simple/
# 获取SKU商品
class SKUSimpleView(ListAPIView):
    permission_classes = [IsAdminUser]
    # 指定视图所使用的查询集
    queryset = SKU.objects.all()
    # 指定视图所使用的序列化器类
    serializer_class = SKUSimpleSerializer

    # 注：关闭分页
    pagination_class = None


# SKU管理
# GET /meiduo_admin/skus/?keyword=<名称|副标题>&page=<页码>&page_size=<页容量>
class SKUViewSet(ModelViewSet):
    '''SKU视图集'''
    permission_classes = [IsAdminUser]
    # 指定router动态生成路由时，提取参数的正则表达式
    lookup_value_regex = '\d+'

    def get_queryset(self):
        # 获取当前视图所使用的查询集
        keyword = self.request.query_params.get('keyword')
        if keyword:
            skus = SKU.objects.filter(Q(name__contains=keyword) |
                                      Q(caption__contains=keyword))
        else:
            skus = SKU.objects.all()
        return skus

    # 指定序列化器类
    serializer_class = SKUSerializer
#新增SKU表数据
#1.获取第三级分类信息
class SKUCategoriesView(ListAPIView):
    serializer_class = CategorySimpleSerializer
    def get_queryset(self):
        '''返回所有第三级分类'''
        #注：第三级分类没有下级，subs为None
        categories=GoodsCategory.objects.filter(subs=None)
        return categories
    #注：关闭分页
    pagination_class = None
